<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: frame.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a>  </div>
  <div class="headertitle">
<div class="title">frame.hpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Routines to manipulate function stack frames, stack variables, register variables and local labels. </p>
<p>The frame is represented as a structure: </p><pre>
  +------------------------------------------------+
  | function arguments (<a class="el" href="classfunc__t.html#a7910e262af144790e0f15056f834bda0" title="number of bytes purged from the stack upon returning ">func_t::argsize</a>)           |
  +------------------------------------------------+
  | return address (isn't stored in <a class="el" href="classfunc__t.html" title="A function is a set of continuous ranges of addresses with characteristics. ">func_t</a>)        |
  +------------------------------------------------+
  | saved registers (SI, DI, etc - <a class="el" href="classfunc__t.html#aaae89da99feeba7a2d3440d8582d85be" title="size of saved registers in frame. ">func_t::frregs</a>) |
  +------------------------------------------------+ &lt;- typical BP
  |                                                |  |
  |                                                |  | <a class="el" href="classfunc__t.html#a676f92e8f23adfdb5f5bc5be5a3345c4" title="frame pointer delta. ">func_t::fpd</a>
  |                                                |  |
  |                                                | &lt;- real BP
  | local variables (<a class="el" href="classfunc__t.html#af7831991ec87f4696d51599ef59b97fc" title="size of local variables part of frame in bytes. ">func_t::frsize</a>)               |
  |                                                |
  |                                                |
  +------------------------------------------------+ &lt;- SP
</pre><p>To access the structure of a function frame, use:</p><ul>
<li><a class="el" href="struct_8hpp.html#a4f7d9419fc4616db2450413427bd1e45" title="Get pointer to struct type info. ">get_struc()</a> (use <a class="el" href="classfunc__t.html#a38a4fc253b5d88c343d973dbd2032dbe" title="netnode id of frame structure - see frame.hpp ">func_t::frame</a> as structure ID)</li>
<li><a class="el" href="frame_8hpp.html#a538eae24587b7931ea67d9d110d68193" title="Get pointer to function frame. ">get_frame(const func_t *pfn)</a></li>
<li><a class="el" href="frame_8hpp.html#a683e2bb3e5d2f33dc81fc81035f6660c" title="Get pointer to function frame. ">get_frame(ea_t ea)</a> </li>
</ul>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structregvar__t.html">regvar_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A register variable allows the user to rename a general processor register to a meaningful name.  <a href="structregvar__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structllabel__t.html">llabel_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Local label.  <a href="structllabel__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structxreflist__entry__t.html">xreflist_entry_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An xref to an argument or variable located in a function's stack frame.  <a href="structxreflist__entry__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a248f3def030aba4ba4b0ac2fec67a472"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a248f3def030aba4ba4b0ac2fec67a472">add_frame</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> frsize, <a class="el" href="pro_8h.html#ab95f123a6c9bcfee6a343170ef8c5f69">ushort</a> frregs, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> argsize)</td></tr>
<tr class="memdesc:a248f3def030aba4ba4b0ac2fec67a472"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add function frame.  <a href="#a248f3def030aba4ba4b0ac2fec67a472">More...</a><br /></td></tr>
<tr class="separator:a248f3def030aba4ba4b0ac2fec67a472"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f27311ac95915332fec813bc65f3dc6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a8f27311ac95915332fec813bc65f3dc6">del_frame</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a8f27311ac95915332fec813bc65f3dc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a function frame.  <a href="#a8f27311ac95915332fec813bc65f3dc6">More...</a><br /></td></tr>
<tr class="separator:a8f27311ac95915332fec813bc65f3dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a713c7440f3458dfe4318bd1e92743f2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a713c7440f3458dfe4318bd1e92743f2e">set_frame_size</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> frsize, <a class="el" href="pro_8h.html#ab95f123a6c9bcfee6a343170ef8c5f69">ushort</a> frregs, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> argsize)</td></tr>
<tr class="memdesc:a713c7440f3458dfe4318bd1e92743f2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set size of function frame.  <a href="#a713c7440f3458dfe4318bd1e92743f2e">More...</a><br /></td></tr>
<tr class="separator:a713c7440f3458dfe4318bd1e92743f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06cd09a14b5832965ad746d5e605ef87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a06cd09a14b5832965ad746d5e605ef87">get_frame_size</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a06cd09a14b5832965ad746d5e605ef87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get full size of a function frame.  <a href="#a06cd09a14b5832965ad746d5e605ef87">More...</a><br /></td></tr>
<tr class="separator:a06cd09a14b5832965ad746d5e605ef87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f585fc61fb88ad3ee8b90b2d0993a2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a1f585fc61fb88ad3ee8b90b2d0993a2e">get_frame_retsize</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a1f585fc61fb88ad3ee8b90b2d0993a2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get size of function return address.  <a href="#a1f585fc61fb88ad3ee8b90b2d0993a2e">More...</a><br /></td></tr>
<tr class="separator:a1f585fc61fb88ad3ee8b90b2d0993a2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227ca109bc1fdf781d018c037901eeec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a227ca109bc1fdf781d018c037901eeec">get_frame_part</a> (range_t *range, const <a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="frame_8hpp.html#a7277e4b0fbb084261a7e828ec29c88e7">frame_part_t</a> part)</td></tr>
<tr class="memdesc:a227ca109bc1fdf781d018c037901eeec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get offsets of the frame part in the frame.  <a href="#a227ca109bc1fdf781d018c037901eeec">More...</a><br /></td></tr>
<tr class="separator:a227ca109bc1fdf781d018c037901eeec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47f814fdfb6e3307611f60491be7386f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f814fdfb6e3307611f60491be7386f"></a>
<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a47f814fdfb6e3307611f60491be7386f">frame_off_args</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a47f814fdfb6e3307611f60491be7386f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get starting address of arguments section. <br /></td></tr>
<tr class="separator:a47f814fdfb6e3307611f60491be7386f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2075164225d9cc53c6964a5adcfaf0dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2075164225d9cc53c6964a5adcfaf0dd"></a>
<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a2075164225d9cc53c6964a5adcfaf0dd">frame_off_retaddr</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a2075164225d9cc53c6964a5adcfaf0dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get starting address of return address section. <br /></td></tr>
<tr class="separator:a2075164225d9cc53c6964a5adcfaf0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd88c894a96749d393dcd369e64cfa23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd88c894a96749d393dcd369e64cfa23"></a>
<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#abd88c894a96749d393dcd369e64cfa23">frame_off_savregs</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:abd88c894a96749d393dcd369e64cfa23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get starting address of saved registers section. <br /></td></tr>
<tr class="separator:abd88c894a96749d393dcd369e64cfa23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2508cc9a0bc14d2a4b36a6434ffdebc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2508cc9a0bc14d2a4b36a6434ffdebc"></a>
<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#af2508cc9a0bc14d2a4b36a6434ffdebc">frame_off_lvars</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:af2508cc9a0bc14d2a4b36a6434ffdebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get start address of local variables section. <br /></td></tr>
<tr class="separator:af2508cc9a0bc14d2a4b36a6434ffdebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e70af40f19141e2d723a35664d684f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e70af40f19141e2d723a35664d684f5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a1e70af40f19141e2d723a35664d684f5">is_funcarg_off</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3">uval_t</a> frameoff)</td></tr>
<tr class="memdesc:a1e70af40f19141e2d723a35664d684f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given offset lie within the arguments section? <br /></td></tr>
<tr class="separator:a1e70af40f19141e2d723a35664d684f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59480473a546fd2d53c39ab677f32480"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59480473a546fd2d53c39ab677f32480"></a>
<a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a59480473a546fd2d53c39ab677f32480">lvar_off</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3">uval_t</a> frameoff)</td></tr>
<tr class="memdesc:a59480473a546fd2d53c39ab677f32480"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given offset lie within the local variables section? <br /></td></tr>
<tr class="separator:a59480473a546fd2d53c39ab677f32480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a538eae24587b7931ea67d9d110d68193"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="classstruc__t.html">struc_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a538eae24587b7931ea67d9d110d68193">get_frame</a> (const <a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a538eae24587b7931ea67d9d110d68193"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to function frame.  <a href="#a538eae24587b7931ea67d9d110d68193">More...</a><br /></td></tr>
<tr class="separator:a538eae24587b7931ea67d9d110d68193"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a683e2bb3e5d2f33dc81fc81035f6660c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstruc__t.html">struc_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a683e2bb3e5d2f33dc81fc81035f6660c">get_frame</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:a683e2bb3e5d2f33dc81fc81035f6660c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to function frame.  <a href="#a683e2bb3e5d2f33dc81fc81035f6660c">More...</a><br /></td></tr>
<tr class="separator:a683e2bb3e5d2f33dc81fc81035f6660c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8284122ba3ea987a183ead63859b4902"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a8284122ba3ea987a183ead63859b4902">update_fpd</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> fpd)</td></tr>
<tr class="memdesc:a8284122ba3ea987a183ead63859b4902"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update frame pointer delta.  <a href="#a8284122ba3ea987a183ead63859b4902">More...</a><br /></td></tr>
<tr class="separator:a8284122ba3ea987a183ead63859b4902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d7b4155b3c9bb4143f43a1905f62e26"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a7d7b4155b3c9bb4143f43a1905f62e26">set_purged</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, int nbytes, bool override_old_value)</td></tr>
<tr class="memdesc:a7d7b4155b3c9bb4143f43a1905f62e26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the number of purged bytes for a function or data item (funcptr).  <a href="#a7d7b4155b3c9bb4143f43a1905f62e26">More...</a><br /></td></tr>
<tr class="separator:a7d7b4155b3c9bb4143f43a1905f62e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50781e1dc737efc6b1db5552fe0be9f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a50781e1dc737efc6b1db5552fe0be9f7">get_func_by_frame</a> (<a class="el" href="pro_8h.html#ad8791d30d19843bc09b78bdf01a852ec">tid_t</a> frame_id)</td></tr>
<tr class="memdesc:a50781e1dc737efc6b1db5552fe0be9f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get function by its frame id.  <a href="#a50781e1dc737efc6b1db5552fe0be9f7">More...</a><br /></td></tr>
<tr class="separator:a50781e1dc737efc6b1db5552fe0be9f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5f8f39b118f4e2eddea74e54e077866"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="classmember__t.html">member_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#ad5f8f39b118f4e2eddea74e54e077866">get_stkvar</a> (<a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> *actval, const <a class="el" href="classinsn__t.html">insn_t</a> &amp;insn, const <a class="el" href="classop__t.html">op_t</a> &amp;x, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> v)</td></tr>
<tr class="memdesc:ad5f8f39b118f4e2eddea74e54e077866"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to stack variable.  <a href="#ad5f8f39b118f4e2eddea74e54e077866">More...</a><br /></td></tr>
<tr class="separator:ad5f8f39b118f4e2eddea74e54e077866"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ecc3558ed60be999ec7b3e7d682dad3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a6ecc3558ed60be999ec7b3e7d682dad3">add_stkvar</a> (const <a class="el" href="classinsn__t.html">insn_t</a> &amp;insn, const <a class="el" href="classop__t.html">op_t</a> &amp;x, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> v, int flags)</td></tr>
<tr class="memdesc:a6ecc3558ed60be999ec7b3e7d682dad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Automatically add stack variable if doesn't exist.  <a href="#a6ecc3558ed60be999ec7b3e7d682dad3">More...</a><br /></td></tr>
<tr class="separator:a6ecc3558ed60be999ec7b3e7d682dad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d0e8e0703f8f54b1c219d3774fd050f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a3d0e8e0703f8f54b1c219d3774fd050f">define_stkvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, const char *name, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> off, <a class="el" href="pro_8h.html#a55dd00e03168fb5180830e87ef0a2c57">flags_t</a> flags, const <a class="el" href="unionopinfo__t.html">opinfo_t</a> *ti, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> nbytes)</td></tr>
<tr class="memdesc:a3d0e8e0703f8f54b1c219d3774fd050f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define/redefine a stack variable.  <a href="#a3d0e8e0703f8f54b1c219d3774fd050f">More...</a><br /></td></tr>
<tr class="separator:a3d0e8e0703f8f54b1c219d3774fd050f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb089d29a4ea64752af90dc32a4baf2c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#aeb089d29a4ea64752af90dc32a4baf2c">build_stkvar_name</a> (<a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *buf, const <a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> v)</td></tr>
<tr class="memdesc:aeb089d29a4ea64752af90dc32a4baf2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build automatic stack variable name.  <a href="#aeb089d29a4ea64752af90dc32a4baf2c">More...</a><br /></td></tr>
<tr class="separator:aeb089d29a4ea64752af90dc32a4baf2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3161147e2b4325883c73c86034d71ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#af3161147e2b4325883c73c86034d71ba">calc_stkvar_struc_offset</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, const <a class="el" href="classinsn__t.html">insn_t</a> &amp;insn, int n)</td></tr>
<tr class="memdesc:af3161147e2b4325883c73c86034d71ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate offset of stack variable in the frame structure.  <a href="#af3161147e2b4325883c73c86034d71ba">More...</a><br /></td></tr>
<tr class="separator:af3161147e2b4325883c73c86034d71ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06ee0c8b0b985ca22e59263f4f51ba96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a06ee0c8b0b985ca22e59263f4f51ba96">delete_unreferenced_stkvars</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a06ee0c8b0b985ca22e59263f4f51ba96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find and delete unreferenced stack variable definitions.  <a href="#a06ee0c8b0b985ca22e59263f4f51ba96">More...</a><br /></td></tr>
<tr class="separator:a06ee0c8b0b985ca22e59263f4f51ba96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa491bea36c2fa9ffd6d5f6bff3f326b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#aa491bea36c2fa9ffd6d5f6bff3f326b4">delete_wrong_stkvar_ops</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:aa491bea36c2fa9ffd6d5f6bff3f326b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find and undefine references to dead stack variables.  <a href="#aa491bea36c2fa9ffd6d5f6bff3f326b4">More...</a><br /></td></tr>
<tr class="separator:aa491bea36c2fa9ffd6d5f6bff3f326b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f77d2c231f8faeb5939be2bc8e2a298"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#ga5f77d2c231f8faeb5939be2bc8e2a298">add_regvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea1, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea2, const char *canon, const char *user, const char *cmt)</td></tr>
<tr class="memdesc:ga5f77d2c231f8faeb5939be2bc8e2a298"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a register variable.  <a href="group__regvar.html#ga5f77d2c231f8faeb5939be2bc8e2a298">More...</a><br /></td></tr>
<tr class="separator:ga5f77d2c231f8faeb5939be2bc8e2a298"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7125fa606d55badfcfb905bf0a40e2e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="structregvar__t.html">regvar_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#ga7125fa606d55badfcfb905bf0a40e2e9">find_regvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea1, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea2, const char *canon, const char *user)</td></tr>
<tr class="memdesc:ga7125fa606d55badfcfb905bf0a40e2e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a register variable definition (powerful version).  <a href="group__regvar.html#ga7125fa606d55badfcfb905bf0a40e2e9">More...</a><br /></td></tr>
<tr class="separator:ga7125fa606d55badfcfb905bf0a40e2e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad1a35ab3f412436bc8e42980ebf119dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structregvar__t.html">regvar_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#gad1a35ab3f412436bc8e42980ebf119dd">find_regvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, const char *canon)</td></tr>
<tr class="memdesc:gad1a35ab3f412436bc8e42980ebf119dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a register variable definition.  <a href="group__regvar.html#gad1a35ab3f412436bc8e42980ebf119dd">More...</a><br /></td></tr>
<tr class="separator:gad1a35ab3f412436bc8e42980ebf119dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga28f5e5e05bd45253e8e546e8d7048e44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#ga28f5e5e05bd45253e8e546e8d7048e44">rename_regvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="structregvar__t.html">regvar_t</a> *v, const char *user)</td></tr>
<tr class="memdesc:ga28f5e5e05bd45253e8e546e8d7048e44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rename a register variable.  <a href="group__regvar.html#ga28f5e5e05bd45253e8e546e8d7048e44">More...</a><br /></td></tr>
<tr class="separator:ga28f5e5e05bd45253e8e546e8d7048e44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga864c220a61416541dcbc6b0d35353b5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#ga864c220a61416541dcbc6b0d35353b5d">set_regvar_cmt</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="structregvar__t.html">regvar_t</a> *v, const char *cmt)</td></tr>
<tr class="memdesc:ga864c220a61416541dcbc6b0d35353b5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set comment for a register variable.  <a href="group__regvar.html#ga864c220a61416541dcbc6b0d35353b5d">More...</a><br /></td></tr>
<tr class="separator:ga864c220a61416541dcbc6b0d35353b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae28b200b6ffb1dfe1dad1683ac87d112"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__regvar.html#gae28b200b6ffb1dfe1dad1683ac87d112">del_regvar</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea1, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea2, const char *canon)</td></tr>
<tr class="memdesc:gae28b200b6ffb1dfe1dad1683ac87d112"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a register variable definition.  <a href="group__regvar.html#gae28b200b6ffb1dfe1dad1683ac87d112">More...</a><br /></td></tr>
<tr class="separator:gae28b200b6ffb1dfe1dad1683ac87d112"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a245da2e9f6e1f65ca306d0bab0db5368"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a245da2e9f6e1f65ca306d0bab0db5368">add_auto_stkpnt</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> delta)</td></tr>
<tr class="memdesc:a245da2e9f6e1f65ca306d0bab0db5368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add automatic SP register change point.  <a href="#a245da2e9f6e1f65ca306d0bab0db5368">More...</a><br /></td></tr>
<tr class="separator:a245da2e9f6e1f65ca306d0bab0db5368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab13680589c0aea771a34d1fd0d63c37f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#ab13680589c0aea771a34d1fd0d63c37f">add_user_stkpnt</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> delta)</td></tr>
<tr class="memdesc:ab13680589c0aea771a34d1fd0d63c37f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add user-defined SP register change point.  <a href="#ab13680589c0aea771a34d1fd0d63c37f">More...</a><br /></td></tr>
<tr class="separator:ab13680589c0aea771a34d1fd0d63c37f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac68a1de58fbd9e15b5a46d0189369467"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#ac68a1de58fbd9e15b5a46d0189369467">del_stkpnt</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:ac68a1de58fbd9e15b5a46d0189369467"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete SP register change point.  <a href="#ac68a1de58fbd9e15b5a46d0189369467">More...</a><br /></td></tr>
<tr class="separator:ac68a1de58fbd9e15b5a46d0189369467"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be01e2fa6c64579f40540d42c6d598e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a5be01e2fa6c64579f40540d42c6d598e">get_spd</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:a5be01e2fa6c64579f40540d42c6d598e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get difference between the initial and current values of ESP.  <a href="#a5be01e2fa6c64579f40540d42c6d598e">More...</a><br /></td></tr>
<tr class="separator:a5be01e2fa6c64579f40540d42c6d598e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32cbc5afee0af39cfbca5de4c9d62dfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a32cbc5afee0af39cfbca5de4c9d62dfb">get_effective_spd</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:a32cbc5afee0af39cfbca5de4c9d62dfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get effective difference between the initial and current values of ESP.  <a href="#a32cbc5afee0af39cfbca5de4c9d62dfb">More...</a><br /></td></tr>
<tr class="separator:a32cbc5afee0af39cfbca5de4c9d62dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5928077ab43a648f05af0d7dd168a6c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a5928077ab43a648f05af0d7dd168a6c7">get_sp_delta</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:a5928077ab43a648f05af0d7dd168a6c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get modification of SP made at the specified location.  <a href="#a5928077ab43a648f05af0d7dd168a6c7">More...</a><br /></td></tr>
<tr class="separator:a5928077ab43a648f05af0d7dd168a6c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92994855388cd45361138ca9b657cd26"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a92994855388cd45361138ca9b657cd26">get_min_spd_ea</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn)</td></tr>
<tr class="memdesc:a92994855388cd45361138ca9b657cd26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the address with the minimal spd (stack pointer delta).  <a href="#a92994855388cd45361138ca9b657cd26">More...</a><br /></td></tr>
<tr class="separator:a92994855388cd45361138ca9b657cd26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae937235a31f9216d185337a3425551eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#ae937235a31f9216d185337a3425551eb">recalc_spd</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> cur_ea)</td></tr>
<tr class="memdesc:ae937235a31f9216d185337a3425551eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recalculate SP delta for an instruction that stops execution.  <a href="#ae937235a31f9216d185337a3425551eb">More...</a><br /></td></tr>
<tr class="separator:ae937235a31f9216d185337a3425551eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeba4d56367ba26fb9a04923cfc89bb6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#aaeba4d56367ba26fb9a04923cfc89bb6">build_stkvar_xrefs</a> (<a class="el" href="frame_8hpp.html#a88d80d5d38b062a7743afc80d32e8a2c">xreflist_t</a> *out, <a class="el" href="classfunc__t.html">func_t</a> *pfn, const <a class="el" href="classmember__t.html">member_t</a> *mptr)</td></tr>
<tr class="memdesc:aaeba4d56367ba26fb9a04923cfc89bb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill 'out' with a list of all the xrefs made from function 'pfn', to the argument or variable 'mptr' in 'pfn's stack frame.  <a href="#aaeba4d56367ba26fb9a04923cfc89bb6">More...</a><br /></td></tr>
<tr class="separator:aaeba4d56367ba26fb9a04923cfc89bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Local Labels</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These are LOW LEVEL FUNCTIONS.</p>
<p>When possible, they should not be used. Use high level functions from &lt;<a class="el" href="name_8hpp.html" title="Functions that deal with names. ">name.hpp</a>&gt; </p>
</div></td></tr>
<tr class="memitem:a022a5bdf03044a322c82659e31706064"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a022a5bdf03044a322c82659e31706064">set_llabel</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, const char *name)</td></tr>
<tr class="memdesc:a022a5bdf03044a322c82659e31706064"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define/rename/delete a local label.  <a href="#a022a5bdf03044a322c82659e31706064">More...</a><br /></td></tr>
<tr class="separator:a022a5bdf03044a322c82659e31706064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cd218c962d48aac137397c4ac22f7b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a5cd218c962d48aac137397c4ac22f7b0">get_llabel_ea</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, const char *name)</td></tr>
<tr class="memdesc:a5cd218c962d48aac137397c4ac22f7b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get address of a local label.  <a href="#a5cd218c962d48aac137397c4ac22f7b0">More...</a><br /></td></tr>
<tr class="separator:a5cd218c962d48aac137397c4ac22f7b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14ca5d88634f1980c167690fca210744"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a14ca5d88634f1980c167690fca210744">get_llabel</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="memdesc:a14ca5d88634f1980c167690fca210744"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get local label at the specified address.  <a href="#a14ca5d88634f1980c167690fca210744">More...</a><br /></td></tr>
<tr class="separator:a14ca5d88634f1980c167690fca210744"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gadea83308bbe3028f66bde2b06d3931e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___s_t_k_v_a_r__1.html#gadea83308bbe3028f66bde2b06d3931e1">STKVAR_VALID_SIZE</a>&#160;&#160;&#160;0x0001</td></tr>
<tr class="memdesc:gadea83308bbe3028f66bde2b06d3931e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">x.dtyp contains correct variable type  <a href="group___s_t_k_v_a_r__1.html#gadea83308bbe3028f66bde2b06d3931e1">More...</a><br /></td></tr>
<tr class="separator:gadea83308bbe3028f66bde2b06d3931e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583c0f5683ebbc2fda4b3d17f9a44484"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga583c0f5683ebbc2fda4b3d17f9a44484"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_e_g_v_a_r___e_r_r_o_r__.html#ga583c0f5683ebbc2fda4b3d17f9a44484">REGVAR_ERROR_OK</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga583c0f5683ebbc2fda4b3d17f9a44484"><td class="mdescLeft">&#160;</td><td class="mdescRight">all ok <br /></td></tr>
<tr class="separator:ga583c0f5683ebbc2fda4b3d17f9a44484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9174f12f12b7415326bb4baa0bcaa416"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9174f12f12b7415326bb4baa0bcaa416"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_e_g_v_a_r___e_r_r_o_r__.html#ga9174f12f12b7415326bb4baa0bcaa416">REGVAR_ERROR_ARG</a>&#160;&#160;&#160;(-1)</td></tr>
<tr class="memdesc:ga9174f12f12b7415326bb4baa0bcaa416"><td class="mdescLeft">&#160;</td><td class="mdescRight">function arguments are bad <br /></td></tr>
<tr class="separator:ga9174f12f12b7415326bb4baa0bcaa416"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacde3e058bcbf2f1e663b5565cea5c40c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacde3e058bcbf2f1e663b5565cea5c40c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_e_g_v_a_r___e_r_r_o_r__.html#gacde3e058bcbf2f1e663b5565cea5c40c">REGVAR_ERROR_RANGE</a>&#160;&#160;&#160;(-2)</td></tr>
<tr class="memdesc:gacde3e058bcbf2f1e663b5565cea5c40c"><td class="mdescLeft">&#160;</td><td class="mdescRight">the definition range is bad <br /></td></tr>
<tr class="separator:gacde3e058bcbf2f1e663b5565cea5c40c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga812754dcd62f1afa4789f66c29caf530"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga812754dcd62f1afa4789f66c29caf530"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_e_g_v_a_r___e_r_r_o_r__.html#ga812754dcd62f1afa4789f66c29caf530">REGVAR_ERROR_NAME</a>&#160;&#160;&#160;(-3)</td></tr>
<tr class="memdesc:ga812754dcd62f1afa4789f66c29caf530"><td class="mdescLeft">&#160;</td><td class="mdescRight">the provided name(s) can't be accepted <br /></td></tr>
<tr class="separator:ga812754dcd62f1afa4789f66c29caf530"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a88d80d5d38b062a7743afc80d32e8a2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88d80d5d38b062a7743afc80d32e8a2c"></a>
typedef <a class="el" href="classqvector.html">qvector</a>&lt; <a class="el" href="structxreflist__entry__t.html">xreflist_entry_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a88d80d5d38b062a7743afc80d32e8a2c">xreflist_t</a></td></tr>
<tr class="memdesc:a88d80d5d38b062a7743afc80d32e8a2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">vector of xrefs to variables in a function's stack frame <br /></td></tr>
<tr class="separator:a88d80d5d38b062a7743afc80d32e8a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a7277e4b0fbb084261a7e828ec29c88e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7277e4b0fbb084261a7e828ec29c88e7"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frame_8hpp.html#a7277e4b0fbb084261a7e828ec29c88e7">frame_part_t</a> { <b>FPC_ARGS</b>, 
<b>FPC_RETADDR</b>, 
<b>FPC_SAVREGS</b>, 
<b>FPC_LVARS</b>
 }</td></tr>
<tr class="memdesc:a7277e4b0fbb084261a7e828ec29c88e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parts of a frame. <br /></td></tr>
<tr class="separator:a7277e4b0fbb084261a7e828ec29c88e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a248f3def030aba4ba4b0ac2fec67a472"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> add_frame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>frsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#ab95f123a6c9bcfee6a343170ef8c5f69">ushort</a>&#160;</td>
          <td class="paramname"><em>frregs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>argsize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add function frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure </td></tr>
    <tr><td class="paramname">frsize</td><td>size of function local variables </td></tr>
    <tr><td class="paramname">frregs</td><td>size of saved registers </td></tr>
    <tr><td class="paramname">argsize</td><td>size of function arguments range which will be purged upon return. this parameter is used for __stdcall and __pascal calling conventions. for other calling conventions please pass 0. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>ok </td></tr>
    <tr><td class="paramname">0</td><td>failed (no function, frame already exists) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8f27311ac95915332fec813bc65f3dc6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> del_frame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete a function frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a713c7440f3458dfe4318bd1e92743f2e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> set_frame_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>frsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#ab95f123a6c9bcfee6a343170ef8c5f69">ushort</a>&#160;</td>
          <td class="paramname"><em>frregs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>argsize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set size of function frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure </td></tr>
    <tr><td class="paramname">frsize</td><td>size of function local variables </td></tr>
    <tr><td class="paramname">frregs</td><td>size of saved registers </td></tr>
    <tr><td class="paramname">argsize</td><td>size of function arguments </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a06cd09a14b5832965ad746d5e605ef87"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_frame_size </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get full size of a function frame. </p>
<p>This function takes into account size of local variables + size of saved registers + size of return address + size of function arguments. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure, may be NULL </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>size of frame in bytes or zero </dd></dl>

</div>
</div>
<a class="anchor" id="a1f585fc61fb88ad3ee8b90b2d0993a2e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_frame_retsize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get size of function return address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure, can't be NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a227ca109bc1fdf781d018c037901eeec"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_frame_part </td>
          <td>(</td>
          <td class="paramtype">range_t *&#160;</td>
          <td class="paramname"><em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="frame_8hpp.html#a7277e4b0fbb084261a7e828ec29c88e7">frame_part_t</a>&#160;</td>
          <td class="paramname"><em>part</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get offsets of the frame part in the frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">range</td><td>pointer to the output buffer with the frame part start/end(exclusive) offsets, can't be NULL </td></tr>
    <tr><td class="paramname">pfn</td><td>pointer to function structure, can't be NULL </td></tr>
    <tr><td class="paramname">part</td><td>frame part </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a538eae24587b7931ea67d9d110d68193"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="classstruc__t.html">struc_t</a>* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_frame </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get pointer to function frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a683e2bb3e5d2f33dc81fc81035f6660c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstruc__t.html">struc_t</a>* get_frame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get pointer to function frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ea</td><td>any address in the function </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8284122ba3ea987a183ead63859b4902"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> update_fpd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>fpd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update frame pointer delta. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function structure </td></tr>
    <tr><td class="paramname">fpd</td><td>new fpd value. can not be bigger than the local variable range size. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a7d7b4155b3c9bb4143f43a1905f62e26"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> set_purged </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nbytes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>override_old_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the number of purged bytes for a function or data item (funcptr). </p>
<p>This function will update the database and plan to reanalyze items referencing the specified address. It works only for processors with <a class="el" href="group___p_r__.html#ga5fbd4b03256088198824f6d375caeb54" title="there are calling conventions which may purge bytes from the stack ">PR_PURGING</a> bit in 16 and 32 bit modes. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ea</td><td>address of the function of item </td></tr>
    <tr><td class="paramname">nbytes</td><td>number of purged bytes </td></tr>
    <tr><td class="paramname">override_old_value</td><td>may overwrite old information about purged bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a50781e1dc737efc6b1db5552fe0be9f7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_func_by_frame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#ad8791d30d19843bc09b78bdf01a852ec">tid_t</a>&#160;</td>
          <td class="paramname"><em>frame_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get function by its frame id. </p>
<dl class="section warning"><dt>Warning</dt><dd>this function works only with databases created by IDA &gt; 5.6 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">frame_id</td><td>id of the function frame </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>start address of the function or <a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f" title="this value is used for &#39;bad address&#39; ">BADADDR</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ad5f8f39b118f4e2eddea74e54e077866"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="classmember__t.html">member_t</a>* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_stkvar </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> *&#160;</td>
          <td class="paramname"><em>actval</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classinsn__t.html">insn_t</a> &amp;&#160;</td>
          <td class="paramname"><em>insn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classop__t.html">op_t</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get pointer to stack variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">actval</td><td>actual value used to fetch stack variable this pointer may point to 'v' </td></tr>
    <tr><td class="paramname">insn</td><td>the instruction </td></tr>
    <tr><td class="paramname">x</td><td>reference to instruction operand </td></tr>
    <tr><td class="paramname">v</td><td>immediate value in the operand (usually x.addr) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>NULL or ptr to stack variable </dd></dl>

</div>
</div>
<a class="anchor" id="a6ecc3558ed60be999ec7b3e7d682dad3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> add_stkvar </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classinsn__t.html">insn_t</a> &amp;&#160;</td>
          <td class="paramname"><em>insn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classop__t.html">op_t</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Automatically add stack variable if doesn't exist. </p>
<p>Processor modules should use <a class="el" href="classinsn__t.html#a472e9683a9b08934e5866320dc6b1b9e" title="Create or modify a stack variable in the function frame. ">insn_t::create_stkvar()</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">insn</td><td>the instruction </td></tr>
    <tr><td class="paramname">x</td><td>reference to instruction operand </td></tr>
    <tr><td class="paramname">v</td><td>immediate value in the operand (usually x.addr) </td></tr>
    <tr><td class="paramname">flags</td><td><a class="el" href="group___s_t_k_v_a_r__1.html">Add stkvar flags</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a3d0e8e0703f8f54b1c219d3774fd050f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> define_stkvar </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a55dd00e03168fb5180830e87ef0a2c57">flags_t</a>&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="unionopinfo__t.html">opinfo_t</a> *&#160;</td>
          <td class="paramname"><em>ti</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>nbytes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define/redefine a stack variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function </td></tr>
    <tr><td class="paramname">name</td><td>variable name, NULL means autogenerate a name </td></tr>
    <tr><td class="paramname">off</td><td>offset of the stack variable in the frame. negative values denote local variables, positive - function arguments. </td></tr>
    <tr><td class="paramname">flags</td><td>variable type flags (<a class="el" href="group___f_f__datafuncs1.html#ga0f4a1d5bd30cf956202889547c9274e6" title="Get a flags_t representing a byte. ">byte_flag()</a> for a byte variable, for example) </td></tr>
    <tr><td class="paramname">ti</td><td>additional type information (like offsets, structs, etc) </td></tr>
    <tr><td class="paramname">nbytes</td><td>number of bytes occupied by the variable </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="aeb089d29a4ea64752af90dc32a4baf2c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> build_stkvar_name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Build automatic stack variable name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">buf</td><td>pointer to buffer </td></tr>
    <tr><td class="paramname">pfn</td><td>pointer to function (can't be NULL!) </td></tr>
    <tr><td class="paramname">v</td><td>value of variable offset </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>length of stack variable name or -1 </dd></dl>

</div>
</div>
<a class="anchor" id="af3161147e2b4325883c73c86034d71ba"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> calc_stkvar_struc_offset </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classinsn__t.html">insn_t</a> &amp;&#160;</td>
          <td class="paramname"><em>insn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate offset of stack variable in the frame structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function (can't be NULL!) </td></tr>
    <tr><td class="paramname">insn</td><td>the instruction </td></tr>
    <tr><td class="paramname">n</td><td>number of operand: (0..<a class="el" href="ida_8hpp.html#ae2018a7cee04a8a790fc5fc445fb473a" title="max number of operands allowed for an instruction ">UA_MAXOP</a>-1) -1 if error, return <a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f" title="this value is used for &#39;bad address&#39; ">BADADDR</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f" title="this value is used for &#39;bad address&#39; ">BADADDR</a> if some error (issue a warning if stack frame is bad) </dd></dl>

</div>
</div>
<a class="anchor" id="a06ee0c8b0b985ca22e59263f4f51ba96"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> delete_unreferenced_stkvars </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find and delete unreferenced stack variable definitions. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to the function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of deleted definitions </dd></dl>

</div>
</div>
<a class="anchor" id="aa491bea36c2fa9ffd6d5f6bff3f326b4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> delete_wrong_stkvar_ops </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find and undefine references to dead stack variables. </p>
<p>(i.e. operands displayed in red) These operands will be untyped and most likely displayed in hex. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to the function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of reset operands </dd></dl>

</div>
</div>
<a class="anchor" id="a022a5bdf03044a322c82659e31706064"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool set_llabel </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define/rename/delete a local label. </p>
<p>THIS IS A LOW LEVEL FUNCTION - use <a class="el" href="name_8hpp.html#aa75fb1ba89bb22f323472e329eb4a486" title="Set or delete name of an item at the specified address. ">set_name()</a> instead of it! </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>function in which the definition will be created </td></tr>
    <tr><td class="paramname">ea</td><td>linear address of the label </td></tr>
    <tr><td class="paramname">name</td><td>name of the label. If NULL or empty string, name will be removed </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a5cd218c962d48aac137397c4ac22f7b0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> get_llabel_ea </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get address of a local label. </p>
<p>THIS IS A LOW LEVEL FUNCTION - use <a class="el" href="name_8hpp.html#ad14a47ac26d57e3926296e9c0c729075" title="Get address of the name. ">get_name_ea()</a> instead of it! </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>function in question </td></tr>
    <tr><td class="paramname">name</td><td>name of the label </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f" title="this value is used for &#39;bad address&#39; ">BADADDR</a> if not found </dd></dl>

</div>
</div>
<a class="anchor" id="a14ca5d88634f1980c167690fca210744"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* get_llabel </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get local label at the specified address. </p>
<p>THIS IS A LOW LEVEL FUNCTION - use get_name() instead of it! </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>function in question </td></tr>
    <tr><td class="paramname">ea</td><td>linear address of the label </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>NULL or ptr to the name </dd></dl>

</div>
</div>
<a class="anchor" id="a245da2e9f6e1f65ca306d0bab0db5368"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> add_auto_stkpnt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>delta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add automatic SP register change point. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function. may be NULL. </td></tr>
    <tr><td class="paramname">ea</td><td>linear address where SP changes. usually this is the end of the instruction which modifies the stack pointer ( <a class="el" href="classinsn__t.html#a68b331560b7f026c120373ca574c2889" title="Linear address of the instruction. ">insn_t::ea</a>+ <a class="el" href="classinsn__t.html#ac3c2b72b27e268eeb2d55bdcbcdbd2b9" title="Size of instruction in bytes. ">insn_t::size</a>) </td></tr>
    <tr><td class="paramname">delta</td><td>difference between old and new values of SP </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="ab13680589c0aea771a34d1fd0d63c37f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> add_user_stkpnt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a>&#160;</td>
          <td class="paramname"><em>delta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add user-defined SP register change point. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ea</td><td>linear address where SP changes </td></tr>
    <tr><td class="paramname">delta</td><td>difference between old and new values of SP </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="ac68a1de58fbd9e15b5a46d0189369467"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> del_stkpnt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete SP register change point. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function. may be NULL. </td></tr>
    <tr><td class="paramname">ea</td><td>linear address </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>success </dd></dl>

</div>
</div>
<a class="anchor" id="a5be01e2fa6c64579f40540d42c6d598e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_spd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get difference between the initial and current values of ESP. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function. may be NULL. </td></tr>
    <tr><td class="paramname">ea</td><td>linear address of an instruction </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 or the difference, usually a negative number. returns the sp-diff before executing the instruction. </dd></dl>

</div>
</div>
<a class="anchor" id="a32cbc5afee0af39cfbca5de4c9d62dfb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_effective_spd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get effective difference between the initial and current values of ESP. </p>
<p>This function returns the sp-diff used by the instruction. The difference between <a class="el" href="frame_8hpp.html#a5be01e2fa6c64579f40540d42c6d598e" title="Get difference between the initial and current values of ESP. ">get_spd()</a> and <a class="el" href="frame_8hpp.html#a32cbc5afee0af39cfbca5de4c9d62dfb" title="Get effective difference between the initial and current values of ESP. ">get_effective_spd()</a> is present only for instructions like "pop [esp+N]": they modify sp and use the modified value. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function. may be NULL. </td></tr>
    <tr><td class="paramname">ea</td><td>linear address </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 or the difference, usually a negative number </dd></dl>

</div>
</div>
<a class="anchor" id="a5928077ab43a648f05af0d7dd168a6c7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1">sval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_sp_delta </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get modification of SP made at the specified location. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pfn</td><td>pointer to function. may be NULL. </td></tr>
    <tr><td class="paramname">ea</td><td>linear address </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the specified location doesn't contain a SP change point. otherwise return delta of SP modification. </dd></dl>

</div>
</div>
<a class="anchor" id="a92994855388cd45361138ca9b657cd26"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_min_spd_ea </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the address with the minimal spd (stack pointer delta). </p>
<p>If there are no SP change points, then return <a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f" title="this value is used for &#39;bad address&#39; ">BADADDR</a>. </p>

</div>
</div>
<a class="anchor" id="ae937235a31f9216d185337a3425551eb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> recalc_spd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>cur_ea</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Recalculate SP delta for an instruction that stops execution. </p>
<p>The next instruction is not reached from the current instruction. We need to recalculate SP for the next instruction.</p>
<p>This function will create a new automatic SP register change point if necessary. It should be called from the emulator (emu.cpp) when auto_state == <a class="el" href="group___a_u__.html#ga26484b0dda0e7740b5db01459e9da421" title="6: reanalyze ">AU_USED</a> if the current instruction doesn't pass the execution flow to the next instruction. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cur_ea</td><td>linear address of the current instruction </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>new stkpnt is added </td></tr>
    <tr><td class="paramname">0</td><td>nothing is changed </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aaeba4d56367ba26fb9a04923cfc89bb6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> build_stkvar_xrefs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="frame_8hpp.html#a88d80d5d38b062a7743afc80d32e8a2c">xreflist_t</a> *&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classfunc__t.html">func_t</a> *&#160;</td>
          <td class="paramname"><em>pfn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmember__t.html">member_t</a> *&#160;</td>
          <td class="paramname"><em>mptr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Fill 'out' with a list of all the xrefs made from function 'pfn', to the argument or variable 'mptr' in 'pfn's stack frame. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">out</td><td>the list of xrefs to fill. </td></tr>
    <tr><td class="paramname">pfn</td><td>the function to scan. </td></tr>
    <tr><td class="paramname">mptr</td><td>the argument/variable in pfn's stack frame. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
